#ifndef _KEY_SCAN_H_
#define _KEY_SCAN_H_

#include "key_scan_cfg.h"



// ==================================================================
/// @brief  : 按键扫描间隔时间
// ==================================================================
#define KEY_SCAN_TIME					20
// ==================================================================
/// @brief  : 按键扫描消抖时间
// ==================================================================
#define KEY_JITTER_TIME					20
// ==================================================================
/// @brief  : 按键长按检测时间
// ==================================================================
#define KEY_CP_TIME						3000
// ==================================================================
/// @brief  : 按键长按保持时间
// ==================================================================
#define KEY_CPH_TIME					200

// ==================================================================
/// @brief  : 按键双击检测设置
// ==================================================================
//#define DOUBLE_CLICK_EN
#ifdef DOUBLE_CLICK_EN
	#define DOUBLE_CNT					2				/*!<默认双击检测2次按键有效*/
	#define DOUBLE_CLICK_TOUT			600				/*!<双击超时时间*/
#endif

// ==================================================================
/// @brief  : 按键消息列表,按照需求增加按键消息集
// ==================================================================
typedef enum {
	MSG_KEY_NONE = 0,
    // add your code below
	MSG_K1_PRESS, MSG_K1_SHORT_PRESS, MSG_K1_LONGPRESS,MSG_K1_LONGPRESS_HD, MSG_K1_LONGPRESS_RE, MSG_K1_DOUBLE_CLICK,
	MSG_K2_PRESS, MSG_K2_SHORT_PRESS, MSG_K2_LONGPRESS,MSG_K2_LONGPRESS_HD, MSG_K2_LONGPRESS_RE, MSG_K2_DOUBLE_CLICK,
	MSG_K3_PRESS, MSG_K3_SHORT_PRESS, MSG_K3_LONGPRESS,MSG_K3_LONGPRESS_HD, MSG_K3_LONGPRESS_RE, MSG_K3_DOUBLE_CLICK,
	MSG_K4_PRESS, MSG_K4_SHORT_PRESS, MSG_K4_LONGPRESS,MSG_K4_LONGPRESS_HD, MSG_K4_LONGPRESS_RE, MSG_K4_DOUBLE_CLICK,
	MSG_K5_PRESS, MSG_K5_SHORT_PRESS, MSG_K5_LONGPRESS,MSG_K5_LONGPRESS_HD, MSG_K5_LONGPRESS_RE, MSG_K5_DOUBLE_CLICK,
	MSG_K6_PRESS, MSG_K6_SHORT_PRESS, MSG_K6_LONGPRESS,MSG_K6_LONGPRESS_HD, MSG_K6_LONGPRESS_RE, MSG_K6_DOUBLE_CLICK,
	MSG_K7_PRESS, MSG_K7_SHORT_PRESS, MSG_K7_LONGPRESS,MSG_K7_LONGPRESS_HD, MSG_K7_LONGPRESS_RE, MSG_K7_DOUBLE_CLICK,
	MSG_K8_PRESS, MSG_K8_SHORT_PRESS, MSG_K8_LONGPRESS,MSG_K8_LONGPRESS_HD, MSG_K8_LONGPRESS_RE, MSG_K8_DOUBLE_CLICK,
	MSG_K9_PRESS, MSG_K9_SHORT_PRESS, MSG_K9_LONGPRESS,MSG_K9_LONGPRESS_HD, MSG_K9_LONGPRESS_RE, MSG_K9_DOUBLE_CLICK,
	MSG_K10_PRESS, MSG_K10_SHORT_PRESS, MSG_K10_LONGPRESS,MSG_K10_LONGPRESS_HD, MSG_K10_LONGPRESS_RE, MSG_K10_DOUBLE_CLICK,
    MSG_K11_PRESS, MSG_K11_SHORT_PRESS, MSG_K11_LONGPRESS,MSG_K11_LONGPRESS_HD, MSG_K11_LONGPRESS_RE, MSG_K11_DOUBLE_CLICK,
	MSG_INVALID = 0XFF
} key_msg_t;


// ==================================================================
/// @brief  : 按键驱动初始化
// ==================================================================
void Key_Init(void);

// ==================================================================
/// @brief  : 按键扫描，放入主循环中
///
/// @returns: 返回按键消息
// ==================================================================
key_msg_t Key_Scan(void);

#endif /* end of include guard: _KEY_SCAN_H_ */

